package tasks

import (
	"fmt"

	"torler.com/qingyue/apps/spider/internal/core"
	"torler.com/qingyue/apps/spider/internal/core/task"
	"torler.com/qingyue/apps/spider/internal/site"
	"torler.com/qingyue/common/types"
)

// 爬虫工具
//
// 第一步抓取
// 		1. 从最近更新中获取
// 		2. 从本地小说文件中获取
// 		3. 从渠道站点的全站中获取
//第二步整理小说
// 		1. 从第三方中获取小说的进行简单整理入库到小说库中，将小说标记为入库状态
// 		2. 从官方站点中获取小说的基本信息，章节列表，并入库到正式小说章节表中，并将小说标记为章节整理状态
// 		3. 根据章节列表，从渠道站点

func AddSpider(app *core.AppContext, mgr *task.TaskManager) {
	logger := app.Logger

	//addLastUpdateTask(app, mgr)
	tsk := task.NewTask(app, types.TaskName(TASK_INSTORE_BOOK), RUNNER_INSTORE_BOOK, task.WithRunModeCorn5Min())
	mgr.AddTask(tsk)

	tsk = task.NewTask(app, types.TaskName(TASK_PUBLISH_SPIDER_BOOK_CHANNEL), RUNNER_PUBLISH_SPIDER_BOOK_CHANNEL, task.WithRunModeCorn5Min())
	//mgr.AddTask(tsk)

	logger.Info("添加爬虫任务成功")
}
func addLastUpdateTask(app *core.AppContext, mgr *task.TaskManager) {
	allParser := site.GetAllParser()

	for _, parser := range allParser {
		siteInfo := parser.GetSiteInfo()

		id := siteInfo.Id

		name := fmt.Sprintf("%s-%d-%s", TASK_LAST_UPDATE, id, siteInfo.Name)
		task := task.NewTask(app, types.TaskName(name), RUNNER_LAST_UPDATE, task.WithRunModeCorn30Min(), task.WithParam("site_id", id))
		mgr.AddTask(task)
	}
}
